package com.ruoyi.system.mapper;

import java.util.List;
import com.ruoyi.system.domain.JxRetakeSchedule;
import org.apache.ibatis.annotations.Param;

/**
 * 补考安排Mapper接口
 * 
 * @author ruoyi
 * @date 2025-01-27
 */
public interface JxRetakeScheduleMapper 
{
    /**
     * 查询补考安排
     * 
     * @param retakeId 补考安排主键
     * @return 补考安排
     */
    public JxRetakeSchedule selectJxRetakeScheduleByRetakeId(Long retakeId);

    /**
     * 查询补考安排列表
     * 
     * @param jxRetakeSchedule 补考安排
     * @return 补考安排集合
     */
    public List<JxRetakeSchedule> selectJxRetakeScheduleList(JxRetakeSchedule jxRetakeSchedule);

    /**
     * 新增补考安排
     * 
     * @param jxRetakeSchedule 补考安排
     * @return 结果
     */
    public int insertJxRetakeSchedule(JxRetakeSchedule jxRetakeSchedule);

    /**
     * 修改补考安排
     * 
     * @param jxRetakeSchedule 补考安排
     * @return 结果
     */
    public int updateJxRetakeSchedule(JxRetakeSchedule jxRetakeSchedule);

    /**
     * 删除补考安排
     * 
     * @param retakeId 补考安排主键
     * @return 结果
     */
    public int deleteJxRetakeScheduleByRetakeId(Long retakeId);

    /**
     * 批量删除补考安排
     * 
     * @param retakeIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteJxRetakeScheduleByRetakeIds(Long[] retakeIds);

    /**
     * 查询学员的待考试补考安排
     * 
     * @param studentId 学员ID
     * @param subjectId 科目ID
     * @return 补考安排
     */
    public JxRetakeSchedule selectPendingRetakeByStudentAndSubject(@Param("studentId") Long studentId, @Param("subjectId") Long subjectId);

    /**
     * 查询学员所有待考试的补考安排
     * 
     * @param studentId 学员ID
     * @return 补考安排列表
     */
    public List<JxRetakeSchedule> selectPendingRetakesByStudent(@Param("studentId") Long studentId);

    /**
     * 查询指定日期范围内的补考安排
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 补考安排列表
     */
    public List<JxRetakeSchedule> selectRetakeScheduleByDateRange(@Param("startDate") String startDate, @Param("endDate") String endDate);
}
